1. Field of the Invention
The invention relates to the field of computing. More specifically, the invention relates to a method and apparatus to perform an application software migration.
2. Background of the Invention
An application software migration, that includes an application software installation or upgrade on an end-user server, is a tedious and time consuming process for the application software developer and application software end-user alike. This process from initial application software development to application software implementation on the end-user server involve many stages. Typically, this process starts with a multitude of software developers designing and writing application software source code relating to different facets of the end-product application software. In general, the application software source code includes multiple programming elements, such as, programs, scripts, procedures, triggers, packages, among others for example. These programming elements are kept resident in an application software source code library. An application software source code library helps manage the programming elements and prevent changes from being overwritten by multiple application software developers making changes.
This may occur, for example, when an application software developer checks out specific programming elements, in a way similar to how a library patron checks out a library book from a library. When an application software developer checks out a copy of a programming element, that application software developer is the only person who may make updates to the programming element at any one time. Without this mechanism, the application software developer risk having a later version of the programming element overwritten by an early, now, incomplete version. For example, if two application software developers make edits to a programming element at the same time, then the application software developer that saves the programming element last would be available and the previous modifications to the earlier saved programming element who be lost.
Another troublesome process of developing application software occurs when the application software source code is to be released. At this time, the application software source code is in various conditions of readiness. For example, the application software source code may contain various programming elements that are not yet production ready for the current release but will be further developed for future application software versions. Also, depending on whether the software migration is for an installation or an upgrade, the software source code may contain varying programming elements that the application software developer may or may not want to be included in the current release. That is, the application software source code library may contain prior, current, and future release programming elements that the application software developer may or may not want to include or have enabled in the version of the software product being shipped to end-users.
In addition, various migration scripts are included with the shipped product to provide user-friendliness to the software migration process. These migration scripts execute the necessary programming elements to perform the software migration on the end-user specific platform. The various end-user specific platforms depend on the end-user hardware, software operating system, database management system, and application software version. Typically, the software migration scripts are manually modified with end-user platform specific information to enable the software migration script to perform the software migration. For example, the migration script may be modified to include the location of various software directories on the end-user server; to include various operating system specific parameters; and/or to include a userid and password to the database management system.
For example, assume an end-user application runs on a Microsoft NT operating system platform and interfaces with a Microsoft SQL Server database. In this computing environment, the end-user would have to modify a software migration script to tailor the software upgrade with Microsoft NT and SQL Server specific parameters. In addition, if the migration script is generic and the migration script is not native to a Microsoft operating system, (e.g., the migration script is a Unix Korn script ), the migration script would need to be further modified to execute within Microsoft operating system, or a software emulation program would have to be included with the Unix migration script, which would allow the Unix migration script to execute in the Microsoft NT operating system environment.
Even here, problems occur when the end-user manually edits the migration scripts with the environment specific information before execution. Specifically, problems occur when end-users edit the migration scripts incorrectly or accidentally delete portions of the scripts. Therefore, editing the migration scripts may cause errors and delays to the implementation of the software migration.
Another troublesome circumstance occurs when errors arise during the software migration process. When the migration process encounters a fatal error, the migration process requires the entire installation process to be restarted. This is especially, troublesome if the migration process is lengthy. In some circumstances, the length of time to restart the migration process is further delayed because a database administrator must “reset” the database to a condition prior to the failed software migration process (e.g., perform a database load and dump). Depending on where the software migration failed, “resetting” the database to its previous condition may take hours.
In other situations, the entire migration process may complete, and it is not until the end-user views the log messages that it determines a fatal error has occurred. In this situation, cascading errors accumulating in the logs makes trouble-shooting difficult. Errors in the migration process may also produce too many error logs. As a result, end-users have to sift through these files and compare any errors in them to a list of ‘acceptable errors’ that are provided.